package top.guoziyang.mydb.client;

import top.guoziyang.mydb.transport.Package;
import top.guoziyang.mydb.transport.Packager;

/**
 * RoundTripper 是一个简单的包装类，用于简化客户端与服务器之间的交互。
 * 它将发送请求和接收响应的操作整合为一次 "往返" 操作（Round Trip），从而提升代码的可读性和可维护性。
 */
public class RoundTripper {
    private Packager packager;

    public RoundTripper(Packager packager) {
        this.packager = packager;
    }

    /**
     * 将请求（Package pkg）通过 packager 发送到服务器
     * 它将发送请求和接收响应的操作整合为一次 "往返" 操作（Round Trip），从而提升代码的可读性和可维护性。
     */
    public Package roundTrip(Package pkg) throws Exception {
        packager.send(pkg);
        return packager.receive();
    }

    public void close() throws Exception {
        packager.close();
    }
}
